import threading
from time import sleep
"""
线程是可以共享全局变量的
GIL 全局解释器锁（自带的坑，不知道什么版本能够解决）  线程同步，但数据安全
同步: 一个一个的完成, 一个做完另一个才能进来
python底层只要用线程默认加锁
计算量过大会锁会释放
"""
ticket = 1000


def run1():
    global ticket
    for i in range(100):
        sleep(0.1)
        ticket -= 1


def run2():
    global ticket
    for i in range(100):
        sleep(0.1)
        ticket -= 1


if __name__ == '__main__':
    # 创建线程
    t1 = threading.Thread(target=run1, name='r1')
    t2 = threading.Thread(target=run2, name='r2')

    # 启动
    t1.start()
    t2.start()

    # 堵在主线程前面
    t1.join()
    t2.join()

    print(ticket)
